觀前提醒:
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
, find the one that is missing from the array.
Example 1:
Input: [3,0,1]
Output: 2
Example 2:
Input: [9,6,4,2,3,5,7,0,1]
Output: 8
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
因為我觀察過題目後,發現到測資都是給定一個從0開始,公差為1的等差數列。
所以,我所採用的是數學解:等差數列和 - 整包數列和 = 消失的數字。
/**
* @param {number[]} nums
* @return {number}
*/
// 等差數列和 - 整包數列和 = 消失的數字。
var missingNumber = function (nums) {
let sum = 0;
for (let i = 0; i < nums.length; i++) {
sum += nums[i];
}
// arithmetic progression (s1 + sn) * n / 2
return (1 + nums.length) / 2 * nums.length - sum;
};
其實這題,也是可以用.indexOf() 來解,但這樣就沒辦法練習到數學方面的解法,故今天僅撰寫數學解的部分。
各位兄弟姊妹有空的話,也可以嘗試用 .indexOf()來寫寫看,這不會很困難歐~
謝謝大家的收看,LeetCode 小學堂我們下次見~